package com.mybase.app.IO_Net;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.mybase.app.R;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by happy_000 on 2014/12/5.
 */
public class ServerSocketActivity extends Activity {

 private Button btn1 = null;
          @Override
   public void onCreate(Bundle savedInstanceState){
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
           btn1 =new Button (this);//Button) findViewById(R.id.btn1);
            //给按钮绑定监听器
           btn1.setOnClickListener(new Btn1Listener());
          }

           //按钮监听器
          private class Btn1Listener implements OnClickListener {
           @Override
             public void onClick(View v)
           {
          //启动一个线程
            new ServerThread().start();
           }
          }

         //线程类
          private class ServerThread extends Thread
 {
           public void run()
            {
           //声明一个ServerSocket对象
            ServerSocket serverSocket = null;
            try
              {
          //创建一个ServerSocket对象,并让ServerSocket在4567端口上监听
           serverSocket = new ServerSocket(4567);
           //调用 ServerSocket对象的accept()方法接收客户端所发送的请求
            //accept()这个方法是一个阻塞的方法，如果客户端没有发送请求，那么代码运行到这里被阻塞，停在这里不再向下运行了，一直等待accept()函数的返回,这时候突然客户端发送一个请求，那个这个方法就会返回Socket对象，
             //Socket对象代表服务器端和客户端之间的一个连接
            Socket socket = serverSocket.accept();
            //从Socket对象中得到InputStream对象
            //一旦通讯管道建立起来后,就是服务器端有一个Socket,客户端也有一个Socket,我们就可以通过服务器端的Socket里面的InputStream来读取客户端所发送的数据
            InputStream inputStream = socket.getInputStream();
             byte data[] = new byte[1024*4];
             int i = 0;
             //从InputStream对象中读取客户端所发送的数据
            while((i = inputStream.read(data)) !=1 )
              Log.d("mytag",new String(data,0,i));
             }
            catch (IOException e)
             {
            e.printStackTrace();
             }
             finally
              {
            try
            {
              serverSocket.close();
            }
            catch (IOException e)
            {
              e.printStackTrace();
            }
            }
          }
          }
          }


/*********

    public static void main(String[] args) throws IOException {
        ServerSocket socketserver=new ServerSocket(8025);// 新建serversocket，端口号设置为8025

        System.out.println("会话开始……");
        Socket socketclient = socketserver.accept();// 获取客户端socket的对象
        // 从socketclient获得一个输入对象，以便接收从客户端送来的数据
        BufferedReader socketinput = new BufferedReader(new InputStreamReader(
                socketclient.getInputStream()));
        //获取一个输出对象，以便把服务器的信息返回给客户端
        PrintWriter socketoutput = new PrintWriter(
                socketclient.getOutputStream(), true);
        while (true)

        {
            String temp = socketinput.readLine();//读取输入对象的信息
            System.out.print("客户端：");
            System.out.println(temp);
            socketoutput.println("Server:I get it!");//把信息返回给客户端

        }

    }
 * */